xend: Better support for legacy HVM config with hvmloader configured
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 11 Feb 2008 14:42:52 +0000 (14:42 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 11 Feb 2008 14:42:52 +0000 (14:42 +0000)
via the 'kernel' config option:
 1. Look for any string containing 'hvmloader'.
 2. The 'kernel' option must be scrubbed to avoid taking
 PV-kernel-loading paths during later guest setup.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
tools/python/xen/xend/XendConfig.py
tools/python/xen/xend/image.py

index 1eb7ee78ca0a11266ddf3261903e787ca60f89a1..5c76e0265003db56fb2bf166959e62c441a5a200 100644 (file)
@@ -406,15 +406,13 @@ class XendConfig(dict):
 
         if self.is_hvm():
             if 'loader' not in self['platform']:
-                log.debug("No loader present")
-                # Old configs may have hvmloder set as PV_kernel param,
-                # so lets migrate them....
-                if self['PV_kernel'] == "/usr/lib/xen/boot/hvmloader":
+                # Old configs may have hvmloader set as PV_kernel param
+                if self.has_key('PV_kernel') and re.search('hvmloader', self['PV_kernel']):
                     self['platform']['loader'] = self['PV_kernel']
-                    log.debug("Loader copied from kernel %s" % str(self['platform']['loader']))
+                    self['PV_kernel'] = ''
                 else:
                     self['platform']['loader'] = "/usr/lib/xen/boot/hvmloader"
-                    log.debug("Loader %s" % str(self['platform']['loader']))
+                log.debug("Loader is %s" % str(self['platform']['loader']))
 
             # Compatibility hack, can go away soon.
             if 'soundhw' not in self['platform'] and \
index 0519e32a26be56efd6c1b2d4a69c76e4dd63803d..4ceb36194f40d052ae1cc2ee14a04461305be354 100644 (file)
@@ -455,7 +455,7 @@ class HVMImageHandler(ImageHandler):
         ret = ImageHandler.parseDeviceModelArgs(self, vmConfig)
         ret = ret + ['-vcpus', str(self.vm.getVCpuCount())]
 
-        if self.kernel and self.kernel != "/usr/lib/xen/boot/hvmloader":
+        if self.kernel:
             log.debug("kernel         = %s", self.kernel)
             ret = ret + ['-kernel', self.kernel]
         if self.ramdisk: